package com.yima.baseproj.utils;

import com.yima.baseproj.module.app.Controller.equipmentController;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.util.Objects;

//public class CacheUtil {
//
//
//    private static Jedis jedis;
//
//    static {
//        jedis = new Jedis("127.0.0.1", 6379); // 连接到Redis服务器
//        jedis.auth("root");
//    }
//
//    public static void Jedis(String key, String value) {
//        jedis.del(key);
//        jedis.set(key, value);
//        jedis.expire(key, 36000); // 设置过期时间为5小时18000  秒   10小时36000
//        jedis.close();
//    }
//
//    public static String getValue(String key) throws Exception {
//        String value = jedis.get(key);
//        if (!Objects.equals(value, "null")) {
//        } else {
//            System.out.println("键已过期删除");
//            equipmentController.authentication();
//        }
//        return jedis.get(key);
//    }
//
//}
public class CacheUtil {
    private static JedisPool jedisPool;

    static {
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        poolConfig.setMaxTotal(128);// 设置连接池最大连接数
        poolConfig.setMaxIdle(128);// 设置连接池中的最大空闲连接
        poolConfig.setMinIdle(16);// 设置连接池中的最小空闲连接
        poolConfig.setTestOnBorrow(true); // 从池中取出连接时，是否进行有效性检查
        jedisPool = new JedisPool(poolConfig, "127.0.0.1", 6379, 2000);
//        jedisPool = new JedisPool(poolConfig, "127.0.0.1", 6379, 2000, "root");
    }

    public static void Jedis(String key, String value) {
        try (Jedis jedis = jedisPool.getResource()) {
            jedis.del(key);
            jedis.set(key, value);
            jedis.expire(key, 36000); // 10小时
        } catch (Exception e) {
            e.printStackTrace();
            // 处理连接异常，如重新连接尝试
        }
    }

    public static String getValue(String key) {
        try (Jedis jedis = jedisPool.getResource()) {
            String value = jedis.get(key);
            if (value == null) {
                System.out.println("键不存在或已过期");
                // 处理键不存在的情况
                equipmentController.authentication();
            }
            return value;
        } catch (Exception e) {
            e.printStackTrace();
            // 处理连接异常
            return null;
        }
    }
}